Linux两个进程交换信息,如何在Linux中的进程之间交换二进制数据
我需要?jiǎng)?chuàng)建一個(gè)可以進(jìn)行無(wú)線網(wǎng)絡(luò)掃描的linux應(yīng)用程序,將結(jié)果放入一個(gè)結(jié)構(gòu)中并以某種方式將其發(fā)送到另一個(gè)將使用該數(shù)據(jù)的主應(yīng)用程序.我最初的想法是在主應(yīng)用程序中創(chuàng)建一個(gè)管道,fork并通過(guò)execl啟動(dòng)另一個(gè)進(jìn)程,它可以寫(xiě)入管道.像這樣的東西:
pid_t pid = NULL;
int pipefd[2];
FILE* output;
char line[256];
pipe(pipefd);
pid = fork();
if (pid == 0)
{
// Child
close(pipefd[0]);
dup2(pipefd[1], STDOUT_FILENO);
dup2(pipefd[1], STDERR_FILENO);
execl("/sbin/wifiscan", "/sbin/wifiscan", (char*) NULL);
}
//Only parent gets here. Listen to what the wifi scan says
close(pipefd[1]);
output = fdopen(pipefd[0], "r");
while(fgets(line, sizeof(line), output))
{
//Here we can listen to what wifiscan sends to its standard output
}
但是,如果輸出中出現(xiàn)二進(jìn)制0,則無(wú)法使用二進(jìn)制數(shù)據(jù).所以我可以將wifiscan應(yīng)用程序的輸出格式化為文本,將其發(fā)送到管道并在主應(yīng)用程序中解析,或者以我還不知道的更智能的方式進(jìn)行.
在Linux中的進(jìn)程之間可靠地交換數(shù)據(jù)的其他方法是什么?
總結(jié)
以上是生活随笔為你收集整理的Linux两个进程交换信息,如何在Linux中的进程之间交换二进制数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《最后的荣光》名将图鉴——张飞
- 下一篇: 深度好文:美国教育为何走向失败?