我的输出去哪了?

2020-04-23 17:20:39 +08:00
 liyongjun0803

C 语言写了一个循环打印 hello world 的程序:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char argv[])
{
        while (1)
        {
                printf("#################################hello world\n");
                sleep(1);
        }
        return 0;
}

编译、放入 /usr/bin 目录、增加开机自启:

$ gcc hello.c -o hello.out

$ sudo cp hello.out /usr/bin/

$ cat /etc/rc5.d/S01hello 
#! /bin/sh
/usr/bin/hello.out &

在开机自启里面我并没有将输出重定向到任何文件(不想加,做个实验),请问系统重启后,我这个后台运行的 /usr/bin/hello.out (PID = 535) 的输出去哪了?我还能找到它吗?

$ ps -ef | grep hello
root       535     1  0 15:21 ?        00:00:00 /usr/bin/hello.out

以下是我进行的尝试,既不懂,也没有效果。

strace -p 535 -ewrite
sudo reptyr 535 -T

下面是 /proc 中 535 进程的文件描述符信息,我能从这里得到输出数据吗?这里的 'socket:[15354]' 我能使用吗?怎样使用?

# cd /proc/535/fd
root@liyongjun-VirtualBox:/proc/535/fd# ll
总用量 0
dr-x------ 2 root root  0 4 月  23 15:23 ./
dr-xr-xr-x 9 root root  0 4 月  23 15:22 ../
lr-x------ 1 root root 64 4 月  23 15:23 0 -> /dev/null
lrwx------ 1 root root 64 4 月  23 15:23 1 -> 'socket:[15354]'
lrwx------ 1 root root 64 4 月  23 15:23 2 -> 'socket:[15354]'

以上
有没有大神指点一下?

2674 次点击
所在节点    Linux
3 条回复
robot1
2020-04-23 17:51:29 +08:00
不太懂 大概看了下,stdin,stdout,stderr 分别是 0,1,2 你程序的 1,2 都指向了 socket?你有重定向输出吗
zdy349
2020-04-23 18:32:28 +08:00
/var/log/boot.log 里找找
wsy2220
2020-04-23 18:37:17 +08:00
重定向到 systemd-journald 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/665403

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX