我需要用来sudo
以不同的用户身份运行进程。但如何使用sudo
类似exec
:
sudo -u www-data exec php -r 'sleep(2); echo 5;'
Run Code Online (Sandbox Code Playgroud)
替换 sudo 进程?
为什么和要求?
sudo
exec
,即没有背景等。我正在编写一个数据记录应用程序,所有程序的启动方式如下:
./program > out.bin
Run Code Online (Sandbox Code Playgroud)
数据收集器定期汇集 stdout 输出文件并读取数据。
问题是 IO 流被缓冲,如果某些程序以每秒 1 个字节的速度输出数据,则需要很长时间(默认 4kB 缓冲区大小,最多需要 4k 秒)才能实际刷新数据。
我的问题是如何强制 stdout/pipe/printf 缓冲区从外部刷新,即从外部调用类似fflush(stdout)
.
我读过各种网站,例如Turn off buffering in pipeline,但我无法禁用缓冲区,因为它对 IO 性能有巨大的影响(测量)。
我正在寻找高性能的生产解决方案,并且始终满足以下条件: