
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]' 以上
有没有大神指点一下?
1 robot1 Apr 23, 2020 不太懂 大概看了下,stdin,stdout,stderr 分别是 0,1,2 你程序的 1,2 都指向了 socket?你有重定向输出吗 |
2 zdy349 Apr 23, 2020 /var/log/boot.log 里找找 |
3 wsy2220 Apr 23, 2020 重定向到 systemd-journald 了 |