Cで記述されたクライアント サーバー アプリケーションがあります。クライアントがサーバーに更新要求を行う基本的なアプリケーションです。利用可能なアップデートがある場合、アーカイブ ファイルがクライアントに送信されます。さらに、クライアントはそれを解凍し、その解凍されたアーカイブから特定のbashスクリプトを実行します。以上がまとめです。クライアント側で更新を行う C 関数を以下に示します。
void executeUpdates(char *path) {
char command[100];
char *tmp;
strcpy(command, "tar xzf ");
tmp = mystrcat(command, path);
mystrcat(tmp, " -C /netnfork/updates/");
system(command); //up to this point, I created the extract command and executed it.
command[0] = '\0';
path[strlen(path) - 7] = '\0';
strcpy(command, path);
strcat(command, "/update.sh");
system(command);// up to this point, I created the command to run the update script and ran it.
}
問題は次のとおりです。
問題:いくつかの単純なコマンド (つまり、いくつかの単純なコマンド)をスクリプトに入れた最初の更新ではupdate.sh
、うまく機能します。このスクリプトに、アーカイブの抽出、 、 、 でのコンパイルを行うコマンドをいくつか入れると./configure
、make
スクリプトmake install
は特定のポイントで永久にハングします。
具体的には、更新アーカイブには、抽出してインストールする必要がある6 つのtar.bzアーカイブがあります。最初の 5 つのアーカイブでは問題なく動作しますが、スクリプトがtar.bzの 6 番目のインストールのポイントに到達すると、ハングアップします。このスクリプトを端末から直接実行すると、問題なく正常に動作します。
質問: この問題を解決するための考えを持っている人はいますか?
注: より具体的な詳細やスクリプトの内容が必要な場合は、お知らせください。
N.B1。root としてupdate Cプログラムを実行します。