C 在多线程程序中向下传递system()的信息

C 在多线程程序中向下传递system()的信息,c,multithreading,thread-safety,popen,C,Multithreading,Thread Safety,Popen,我有一条由调用方exec()或system()或popen()生成的消息,希望将其传递给子进程。更改环境是一种方法,但在多线程程序中,通过putenv()或setenv()更改环境是不安全的。我不允许通过子进程的argv传递它 将某些内容写入某个文件是一种选择,但我们如何确定某个特定消息是从哪个父级传递到哪个子级的呢?一种方法是将父pid附加到消息中,子级可以找到与ppid匹配的消息。但是,当多个线程调用popen()时,将有多条消息具有相同的pid。我不是专家,但这里有一个想法: shell允

我有一条由调用方
exec()
system()
popen()
生成的消息,希望将其传递给子进程。更改环境是一种方法,但在多线程程序中,通过
putenv()
setenv()
更改环境是不安全的。我不允许通过子进程的
argv
传递它


将某些内容写入某个文件是一种选择,但我们如何确定某个特定消息是从哪个父级传递到哪个子级的呢?一种方法是将父pid附加到消息中,子级可以找到与ppid匹配的消息。但是,当多个线程调用
popen()
时,将有多条消息具有相同的pid。

我不是专家,但这里有一个想法:

shell允许您使用“临时”环境变量。例如,您可以(在zsh中)执行以下操作:


也许你可以这样做?也许这需要在子shell中运行命令?

popen()可能是您的朋友。我建议使用锁定来防止多个线程同时写入管道,并用线程id信息标记消息。

您使用什么语言?我猜是C?答案取决于语言:例如,Python的
env
参数是
popen()
% MSG="Hello" my_prog
% echo $MSG

%