我正在做一些涉及屏幕的脚本,似乎screen -ls
总是返回1。这正常吗?
屏幕手册页说如果通过了它会做一些有趣的事情screen -ls -q
,但是我没有这样做(可能还值得注意的是,-q
这似乎不起作用)。
好吧,现在我真的很困惑。我正在寻找gnu屏幕源:
if (lsflag) {
int i, fo, oth;
if (multi)
real_uid = multi_uid;
SET_GUID();
i = FindSocket((int *)NULL, &fo, &oth, SocketMatch);
if (quietflag) {
if (rflag)
exit(10 + i);
else
exit(9 + (fo || oth ? 1 : 0) + fo);
}
if (fo == 0)
Panic(0, "No Sockets found in %s.\n", SocketPath);
Msg(0, "%d Socket%s in %s.", fo, fo > 1 ? "s" : "", SocketPath);
eexit(0);
}
lsflag
如果发出-l
或-ls
命令,eexit
则设置为:
void eexit(int e)
{
if (ServerSocket != -1) {
if (setgid(real_gid))
AddStr("Failed to set gid\r\n");
if (setuid(real_uid))
AddStr("Failed to set uid\r\n");
if (unlink(SocketPath))
AddStr("Failed to remove socket\r\n");
}
exit(e);
}
甚至不可能screen -ls
返回1。