2017-03-19 14 views
0

awesome 3.5에서는 awful.util.pread()에 의존하는 맞춤 위젯을 사용했습니다. 최고 4.0 내가 대신awful 4.0의 awful.util.pread 대체

나는이 교체하려고 awful.spawn.easy_async()를 사용하도록 지시했다 :

local cmd = "echo 5555" 
local ret = "5" 
ret = awful.util.pread(cmd) 

-- ret contains 5555 

을두고 :

local cmd = {"bash", "-c", "echo 5555"} 
local ret = "5" 
awful.spawn.easy_async(cmd, function(stdout, stderr, reason, exit_code) 
    ret = stdout 
end) 

-- ret contains 5 

변수 RET는 변경되지 않습니다. awful.spawn 함수를 사용하여 awful.util.pread()의 동작을 어떻게 재현 할 수 있습니까? 당신이 콜백 내부 기능를 호출해야하므로

+0

비동기 끝내에 대해 잘 모르고, 비동기 의미, 당신이해야 * 사용 말할 것입니다 * stdout * inside * 비동기 코드 블록. 그것의 외부에서 사용될 변수에 할당하는 대신 작동하지 않을 것이다. – Camusensei

답변

0

easy_async 존재 비동기, 할당은 지속되지 않습니다

local cmd = {"bash", "-c", "echo 5555"} 
awful.spawn.easy_async(cmd, function(stdout, stderr, reason, exit_code) 
    naughty.notify { text = "output is " .. stdout } 
end) 
-- the anonymous function has not been called yet when this comment is reached