こんばんは。
シェルやコマンドで例えば「ls」や「sleep」なんかは実行後には勝手に終わってくれますが、「top」等は止めるコマンドを入力しないかぎり終わりません。
このような特性を持っているコマンド、及びシェルを一定時間で終了するようにするには一体どうやればいいでしょうか。
シェルを作る際にどうしても自動で終わらないコマンドを入れたいのですが、それを入れるとその行以降のコマンドが実行されず、シェルが止まってしまって困っています。
環境はCentosです。どんな意見でもいいので教えて頂けたら幸いです。どうぞよろしくお願いします。
No.2ベストアンサー
- 回答日時:
「シェル」とあるのはシェルスクリプトのことですね? 「スクリプト」を略すと意味が違ってしまうので。
Cで試しに書いてみました。第1引数に待つ時間(秒)、第2引数以降に実行するコマンドとその引数を書いてください。第1引数で指定した時間が経過すると、SIGTERMを送って子プロセスを終了させます。
簡単にテストはしましたが、無保証です。適当に改造して使ってください。
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include <errno.h>
int main(int argc, char **argv) {
int sec;
pid_t pid;
if (argc < 3) {
fprintf(stderr, "too few arguments\n");
return 1;
}
sec = atoi(argv[1]);
if (sec < 1) {
fprintf(stderr, "wrong time %d\n", sec);
return 1;
}
pid = fork();
if (pid == 0) {
/* child process */
int i;
char **args = (char **)malloc((argc-1)*sizeof(char*));
if (!args) {
fprintf(stderr, "malloc() failed\n");
return 1;
}
for (i = 0; i < argc-2; i++) { args[i] = argv[i+2]; }
args[argc-2] = NULL;
execvp(argv[2], args);
fprintf(stderr, "execvp() failed: errno=%d\n", errno);
return 1;
}
/* parent process */
if (pid == -1) {
fprintf(stderr, "fork() failed: errno=%d\n", errno);
return 1;
} else {
sleep(sec);
if (kill(pid, SIGTERM) < 0) {
fprintf(stderr, "kill() failed: errno=%d\n", errno);
return 1;
}
}
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- Mac OS PATHを使ってcdなどで簡単に移動できるようになりたい 3 2023/05/13 14:22
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- その他(コンピューター・テクノロジー) (コマンドプロンプト)コマンドプロンプトのactiveについて 2 2022/07/16 17:21
- UNIX・Linux ubuntuに外部侵入できるか 2 2022/04/09 12:48
- CAD・DTP Autocad Scriptファイルからの入力とコマンドラインからの入力が違う 1 2023/08/01 09:13
- その他(プログラミング・Web制作) ぱそこん、スマホのos、アプリに使われてるコマンドって新しく開発する時に完全に一つのコマンドがどのよ 1 2023/06/17 13:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mallocについて
-
ArduinoのジャイロモジュールMP...
-
C言語をコンパイルするとコンピ...
-
システムエンジニアの適正について
-
VisualStudio2022でC言語プログ...
-
パイソン。If elseの挙動につい...
-
擬似コード 長さがmの配列でな...
-
Windows Formアプリからコンソ...
-
gccを行ってもexeファイルが生...
-
Linuxでの開発環境構築や設定の...
-
プログラムが書けません。
-
double型が正常に認識されてい...
-
MACで動く実行ファイルをWindow...
-
C言語でファクト関数を使わずに...
-
大量のデータを読み込んで表示...
-
C言語初心者 構造体 課題について
-
C言語階乗の総和を求める
-
C言語 配列と関数の練習問題
-
あなたは、Excelはどうやって学...
-
WindowsのCapsLock(キャップス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gccを行ってもexeファイルが生...
-
あなたは、Excelはどうやって学...
-
WindowsのCapsLock(キャップス...
-
質問失礼します。 プログラム言...
-
double型が正常に認識されてい...
-
Notepad++の関数リスト表示でC...
-
どちのほうがすきですか?
-
Stuck
-
Notepad++の関数リスト表示の変...
-
ArduinoでMouse関数を使用して...
-
C言語の関数と配列に関する質問
-
C言語って古いですか?
-
Linuxでの開発環境構築や設定の...
-
Bitcoin、BTCはブロックチェー...
-
C++6.0でのresource.hについて
-
MACで動く実行ファイルをWindow...
-
C言語 列挙型(enum型)変数について
-
c言語
-
大量のデータを読み込んで表示...
-
こんなことてしますか??
おすすめ情報