• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:remove関数(?)でプロセスが停止する。)

remove関数でプロセスが停止する原因と回避方法

FoolWordの回答

  • FoolWord
  • ベストアンサー率73% (14/19)
回答No.1

> mkdir("mkdir /var/tmp/etc/test1, mode)とし、test1ディレクトリを > 作るようプログラムしています。 プログラム上で上記の記述をしてるのですか? mkdir("/var/tmp/etc/test1",mode)なのでは?

sav_moster
質問者

補足

ご回答、ありがとうございます。 すみません。 >mkdir("/var/tmp/etc/test1",mode)なのでは? と記述しています。

関連するQ&A

  • remove関数(?)でプロセスが停止する。

    remove関数(?)でプロセスが停止する。 すみません。とても困っています。 ご存知でしたら、教えてください。 現在、linuxでc言語のプログラミングをしています。 元々、以下のディレクトリがあるとします。 /var/tmp/etc 2つのプロセスがあり、それぞれA、Bとします。 プロセスA内の一つのスレッドで、 remove("/var/test.dat")を実行し削除するようにプログラムしています。 また、プロセスB内の1つのスレッドで、 system("mkdir /var/tmp/etc/test1)とし、test1ディレクトリを 作るようプログラムしています。 実行し、普通に動いていたのですが、 このremove関数とsystem(mkdir)関数が同時?に実行(バッティング)すると そこでピタッと処理がとまってしまい、 (↑ログを仕込んで調べてみました。確実ではありませんが、同時に起きる時に 大体とまっていると推測しています。) /varディレクトリにすらアクセスできなくなってしまいます。 (cd var で lsコマンドを叩くと何も表示されないし、リターンもない) この現象を回避したいのはしたいのですが、 まず原因を知りたいと思っています。 remove関数とsystem(mkdir)関数が同時に走るとなぜだめなんでしょうか? すみませんが、いくら調べてわかりませんでした。 ご教示いただけると助かります。 以上、よろしくお願いいたします。

  • 別のプロセスの関数を呼び出す方法はありますか?

    別のプロセスの関数を呼び出す方法はありますか? WINDOWSでプロセスAとプロセスBがあり、 プロセスBの関数ポインタをプロセスAで取得するところまではできるのですが、 この後、プロセスAからプロセスBの関数をコールバックする方法はありますか? アドレス空間はプロセスごとに固有であるため、 通常のコールバックではうまくいかないと思うのですが・・・。 尚、プロセスAとプロセスBは、異なるプログラムです。

  • Linuxで生成したプロセスに処理をさせるには?

    Linuxの学んでいる者です。 表題の件について、本を読んだり、ネットで検索したり したのですが、解決ができなかったため質問させて いただきました。 以下に例を挙げます。 1つのCファイルに、「main」と「A」と「B」という関数があるとします。 「main」関数にて、fork()で2つプロセスを生成し、一方のプロセスでは 「A」関数を実行し、もう一方では「B」という関数を実行させます。 「A」という関数は3秒ごとに「1,2,3,…」と数字を出力するもので、 「B」という関数は5秒ごとに「10、20、30、…」と数字を出力するものとします。 こういう場合に、プロセスに「A」や「B」の処理を実行させることができません。 exec関数でプロセスに別のプログラムを実行させることはできますが、 プログラムの実行ファイルのパスを指定して実行させるようなので、 この場合にはうまく使えません。 理解されている方には、本当に些細なことではあると思いますが、 私では解決にまで至らなかったので、ご教授いただければ幸いです。 よろしくお願いいたします。

  • VBのMdDir関数について。

    VisualBasic6.0で、ディレクトリを作成するようなプログラムを作成しています。 MkDirという関数を使っているのですが、関数が成功した直後、エクスプローラーが更新されず、一度ウィンドウを閉じてまた開く、という作業を行わなければ実効結果が確認できず、大変不便です。 MkDirという関数も、DOSコマンドのようで、信頼性に欠けるような気がして、、 もっと「いい関数」(エラー処理がしやすい、実行結果がプログラム中で確認しやすい関数など)って、無いのでしょうか?

  • 子プロセスのデバッグ方法について

    VisualStudio2008のVCでデバッグをしています。 Win32のCreateProcess関数で"自分自身"のEXEファイルを実行すると、新プロセスが起動するのですがデバッグができません。 CreateProcessの呼び出し側プロセスと、同じプログラムである新プロセスを同時にデバッグすることはできないものでしょうか。

  • 関数の引数とグローバル変数について

    javascript初心者です。 どうしても分からないことがあるので質問させて頂きます。 グローバル変数の値を関数で処理して増やしコンソールログに表示していく、 というようなソースがあるとします。(以下) //グローバル変数 var a = 0; var b = 0; var c = 0; //計算する関数 var afunc = function(){   a++;   console.log(a); } var bfunc = function(){   b++;   console.log(b); } var cfunc = function(){   c++;   console.log(c); //onclickなどで呼び出す関数 function test1(){   var aplus = new afunc(); } function test2(){   var aplus = new bfunc(); } function test3(){   var aplus = new cfunc(); } グローバル変数や関数などが3つと数が少ないならこれでもいいかも知れませんが、 これが数十個とかに増えると、ソースの量もかなり多くなり 管理も大変になると思い簡略化させたいと考えました。 そこで以下のように変えてみたのですが、 加算がうまくいきません。 //グローバル変数 var a = 0; var b = 0; var c = 0; //計算する関数 vvar xxfunc = function(xx){   this.xx = xx;   this.show = function() {     this.xx++;     console.log(this.xx);   } } //onclickなどで呼び出す関数 function test1(){   var aplus = new xxfunc(a);   aplus.show(); } function test2(){   var aplus = new xxfunc(b);   aplus.show(); } function test3(){   var aplus = new xxfunc(c);   aplus.show(); } もしかすると、関数の引数にはグローバル変数を指定することができないのでしょうか? 何かうまいやり方はあるでしょうか? プログラミング自体が勉強し始めたばかりなので、 おかしなソースの書き方をしているかもしれませんのが、 ご教授、よろしくお願いいたします。

  • タスクやプロセス管理について

    このカテゴリでよいか迷ったのですが質問させていただきます。 私は今までの仕事で、某セキュリティ会社の防犯監視システム開発、某携帯電話開発(UI)に携わってきました。 そこではリアルタイムOSマルチタスク環境でのプログラム開発だったのですが、マルチタスクといっても当然タスク毎に"実行可能状態"、"待ち状態"、"実行中状態"等(その他いろいろ)、各種状態を持ち、タスクプライオリティに従いOSがタスクのスケジューリングを行い順次タスクが切り替わって制御されているという感じだったのですが(何が言いたいかというと優先順位の違う複数のタスクが並列で動くことはないですよね?と言いたいのですが)、 今回LinuxOS(MontaVista)でのプログラム開発を行ってみて違いに戸惑いを感じました。(マルチ)プロセスとは何ぞや?から始まり、さらにそのプロセス内で作成されるスレッド、そのプロセス・スレッドは他のプロセス・スレッドと並列で動く等等。(正確にはあたかも同時に動作しているかのように見えるってことですよね?) 前半の"タスク"と後半の"プロセス"とはこのように別物なのですよね? 今までの経験では並列動作という概念が無かったもので、どうもしっくりこなく意見をあおぐ為投稿させていただきました。 かなり漠然としたことで恐縮なのですが、今まで述べたことでなにか勘違いしているんじゃないかとか間違えていることとかありますか? 長文となり申し訳ありません。

  • プロセスとスレッドの違いについて(Cプログラミングの観点から)

    プロセスとスレッドの違いがしっくりきません。 <プロセス> (1)プログラムの実行単位。Windows や Linux などの汎用 OS 上のアプリケーションは一般にプロセスとして動作している。プロセスは1つ以上のスレッドと、ファイル、ヒープメモリなどのリソースで構成される (2)起動や切り替えのオーバーヘッドが大きい <スレッド> (1)同一プロセス内の複数スレッドを同一メモリ空間上で実行でき、メモリ消費量などが軽減できる。 (2)マルチスレッド処理のプログラミングにおいては、同じデータを複数のスレッドが同時に書き換えることによる不整合に注意し、排他制御を行う必要がある。 等はwiki等調べて理解しています。 何が疑問なのかと申し上げますと、具体的にプログラミングする際に (1)マルチプロセスとマルチスレッド方式では、ソースにどのような違いが出てくるか (2)マルチプロセスとマルチスレッド方式では実行時間がどれだけ変化するか がわからないのです。お仕事で並列処理等について担当されている方などおられましたら、お手数ですがご教授ください。 なお、わかりやすい書籍、webサイト等ありましたらそれも併せて教えていただけると助かります。よろしくお願いします。ちなみに、環境はWindowsXP,VisualC++ExpressEdition2005を使っていますので、UNIXよりはWindowsかつCで動くプログラム例で教えていただけると大変助かります。しかし、当方Javaも多少であれば組めますのでJavaでも構いません。 何卒、よろしくお願い致します。

  • 関数を使ったプログラムについてなのですが・・・

    ・変数a,bの内容を入れ換える処理を関数を用いて実行するためのプログラム と ・変数a,bを与えたときa+bとa-bを計算する処理を関数を用いて行い、和と差を表示させるためのプログラム はどう作ればいいか分かりません…。 教えてください。

  • プロセスのハンドルを確保

    AプログラムからBプログラムを起動するプログラムを作成しています。 AはループでBプログラムを起動するのですが、Aでプロセスの起動数をチェックし、飽きのプロセスハンドルを確保しBプログラム意を起動する際にAで確保したハンドルを使用して起動するような処理をするにはどうしたらいいでしょうか? 例:プロセス最大起動数:5   Aは10回ループし、Bを起動する。   Aでプロセスハンドルを5個確保する。   Bを起動する際に確保したハンドルを1個使用する。   Bが終了したらハンドルを解放する。