我試圖通過ttyS0使用cu(谷歌「cu unix」來了解更多關於cu的信息)與另一個UNIX設備進行通信。我的程序工作得很好,但問題是,在第一次執行程序(建立連接,讀取日誌文件和其他東西)之後,終端無法再訪問。我剛剛發佈了我的問題的核心代碼的簡化版本,我只專注於我的實際問題:用C程序啓動和終止cu
當我手動執行這些命令「cu -l/dev/ttyS0 -s 115200「和」〜「。 (就像在cu的手冊頁中所示:〜。終止連接)一切正常。像
system("cu -l /dev/ttyS0 -s 115200");
system("~.");
順序程序無法正常工作,因爲銅依然活躍,並沒有什麼後執行....程序只是坐在那裏等待立方米......同樣的事情會發生在一個簡單的bash腳本... cu會阻止程序/腳本繼續 - 這就是爲什麼我使用線程,就像我說的,我的實際程序工作,但該程序沒有終止像我想要的和終端有重新啓動。 當我執行下面的程序,我只得到
Connected
sh: ~.: not found
按enter
cu: can't restore terminal: Input/Output error
Disconnected
和不能使用的終端是開放的(不能打字或用它做任何事情)...
#define _BSD_SOURCE
#include <termios.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <time.h>
#include <stdlib.h>
#include <pthread.h>
void first(){
system("cu -l /dev/ttyS0 -s 115200");
pthread_exit(NULL);
}
void second(){
system("~."); //also "~.\n" isn't changing anything
pthread_exit(NULL);
int main(){
pthread_t thread1, thread2;
pthread_create (&thread1, NULL, (void*)first, NULL);
sleep(3);
pthread_create (&thread2, NULL, (void*)second, NULL);
sleep(4);
exit(0);
return 0;
}
你知道'系統'產生一個新的過程,對吧?而且你不應該在多線程的過程中做到這一點('fork')? – zoska 2014-12-05 10:42:22
你期望什麼'system(「〜。」);'去做? – user3629249 2014-12-05 11:23:18
答案在我的文章中:「當我手動執行這些命令」cu -l/dev/ttyS0 -s 115200「和」〜「時(就像在cu:〜的手冊頁中所述),終止連接)一切正常。「請在提問前閱讀。 – Buitenlander 2014-12-05 11:44:55