• 締切済み

プログラムエラー

プログラムを実行したところ、こんなエラーが出てしまいました。 msgrcv failure: Argument list too long 実行したいプログラムは3つのプロセスがもつ数字を順番に並べる作業です。 1番目のプロセスはうまくいくのですが、2番目が上記のようなエラーがでてきてしまいます。 なぜでしょうか??

みんなの回答

  • kamikami30
  • ベストアンサー率24% (812/3335)
回答No.1

さぁ、わかるはずがありません。 まず、ソースコードも開示されていなければ、どんな言語で書かれたものかさえ説明がない。 基本的に必要な事項を把握できなければ、プログラムは出来ません。

vme23688
質問者

補足

プログラムはc言語で書いています。 そのエラーが何の意味を示しているのかさえ教えてくれればいいのです。

関連するQ&A

  • プログラムエラー

    プログラムを実行したところ、こんなエラーが出てしまいました。 msgrcv failure: Argument list too long 実行したいプログラムは3つのプロセスがもつ数字を順番に並べる作業です。 1番目のプロセスはうまくいくのですが、2番目が上記のようなエラーがでてきてしまいます。 なぜでしょうか?? エラーで出てくるところは int main( int argc, char** argv ) { int qid; Qmsg message; long int myNo; int myProp; int data[NUM_DATA]; int isSwap = 0; int needMinSort = 0; int needMaxSort = 0; int got_data; int totalSwapNum = 0; int i,flag,m,n,l,s; if( argc != 2){ fprintf(stderr, "Usage: %s <own order(1-10)>\n", argv[0]); exit(1); } myNo = atol(argv[1]); if( myNo <= 0 || NUM_PROCESS < myNo ){ fprintf(stderr, "Illegal own order (%ld)\n", myNo); exit(1); } switch( myNo ){ case 1: myProp = LEFT_SIDE; printf("[%ld] is LEFT SIDE\n", myNo); break; case NUM_PROCESS: myProp = RIGHT_SIDE; printf("[%ld] is RIGHT SIDE\n", myNo); break; default: myProp = MIDDLE; printf("[%ld] is MIDDLE\n", myNo); } errno = 0; if( (qid = msgget((key_t)KEY_NO, 0666 | IPC_CREAT)) == -1 ){ perror("msgget failure"); exit(1); } message.msgData.status = MSG_AWAKE; switch( myProp ){ case LEFT_SIDE: sendMsgRhs( qid, myNo, message ); break; case MIDDLE: recvMsgLhs( qid, myNo, &message );         //ここでエラー if( message.msgData.status != MSG_AWAKE ){ exit(1); } sendMsgRhs( qid, myNo, message ); break; case RIGHT_SIDE: recvMsgLhs( qid, myNo, &message ); if( message.msgData.status != MSG_AWAKE ){ exit(1); } break; } } int recvMsgLhs( int qid, long int myNo, Qmsg* message ) { long int read_from = myNo; errno = 0; if(msgrcv(qid, message, sizeof(message->msgData), read_from, 0) == -1){ perror("msgrcv failure"); exit(1); } #ifdef SHOW_XFER_MESSAGE printf("Lhs[%2ld] ---> Recv ---> [myNo:%2ld] (%s)", message->type - 1, myNo, msgStr[message->msgData.status]); switch( message->msgData.status ){ case MSG_SWAP: case MSG_NEED: case MSG_SWAP_CNT: printf(" {data:%d}\n", message->msgData.data); break; default: printf("\n"); } #endif return errno; }

  • [unixのシェルコマンド]のエラー「zip: argument list too long」を回避する方法について

    telnetでログインして、 unixのシェルコマンドを使って圧縮 % zip file.zip filename/* すると、 zip: argument list too long というエラーが出てしまいます。 凡そ40万ファイル程度あるのですがこれを 一括で簡単に圧縮したいのですが何か良い方法は無いでしょうか?

  • プログラムの一時停止について

    Linuxである計算プログラムを実行しています。そのパソコンをシャットダウンする必要があるので、現在動いているそのプログラムをシャットダウン前に停止して、パソコンの再起動後に計算も復帰させたいと思っております。そのプログラムに一時停止機能はございませんので、OS側でその作業を行いたいと思っています。 はじめ、”kill -STOP プロセスID”でプログラムを停止して、”kill -CONT プロセスID”で復帰できると思ったのですが、それで復帰させようと思うと、そのようなプロセスIDはありませんというエラーメッセージが出ました・・・。パソコンを停止しなければ、そのコマンドで上手く停止・復帰が出来たのですが・・・。 パソコンを再起動しても、実行プログラムを停止・再開させる方法をご存知の方がいれば、是非アドバイスを頂きたいです。

  • majordomoで添付ファイルを送るとエラーになる

    メーリングリストでmajordomoを使っているのですが、 添付ファイルをつけて送ると「Message too long (>40000 chars)」と エラーが出て送れません。。。。 小さなテキストファイルの添付だと送れるのですが、どうしてでしょうか? 添付ファイルが大きいと送れないということでしょうか? 教えて頂きたいです。

  • JavaAppletのボタンを押すことで、Fortranプログラムが実

    JavaAppletのボタンを押すことで、Fortranプログラムが実行できるようにプログラムを作っています。ですが、今エラーが出て困っています。誰か教えて頂けないでしょうか? 必ず、エラーでディレクトリが見つかりません。とでます。 cdのコマンドでプログラムがある所まで移動したいのですが,どう打てばいいのか分かりません。現在のプログラムは以下のとおりになっています。 OSはLinuxのFedora10です。開発環境としてEclipse使ってます。 try { String command = "./main < input.txt"; //外部プロセス ProcessBuilder pb = new ProcessBuilder(command); //ProcessBuilder構築 Process process = pb.start(); //プロセス実行 process.waitFor(); } catch (Exception e1) { e1.printStackTrace(); }

  • python ですが下記のプログラムがエラーになり

    python ですが下記のプログラムがエラーになります。どうしてでしょうか。よろしくお願い致します。 def revers(data): for index in range(len (data)-1,-1,-1): yield data[index] some_list = [‘a’, ‘b’, ‘c’, ‘d’] for e in revers(some_list): print(e) 実行結果をd      c      b      a にしたいのですがエラーがでます。

  • プロセスに関するプログラム

    UNIX系OSでのプロセスの動きを確認するプログラムを勉強しています。 コマンドライン引数で与えられた整数の数だけプロセスを作成するというもので、わからないことがありますので教えて頂けると幸いです。 質問の要点は 1.プロセスの番号がなぜ順番どおりに並ばないことがあるのか 2.どのような点からこのプログラムのプロセスの最大生成数を判定す  るのか という2点です。 parentIDが1のときはinitが親を引き継いでいることはわかっています。 どなたかご教授おねがいします。 下記にソースコードを載せておきます。 *** process.c *** #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char *argv[]) { int np; int i; pid_t child_id; if(argc == 2) { fprintf(stderr, "<number of processes>\n"); exit(1); } np = atoi(argv[1]); for(i = 0; i < np; i++) if(child_id = fork()) break; printf("%d: process ID=%ld parent ID =%ld child ID=%ld\n", i , (long)getpid(), (long)getppid(), (long)child_id); return 0; }

  • デッドロックエラー

    C#からSQLSeverにトランザクションを実行する際に WITH(TABLOCK,XLOCK) を付加していますが、 System.Data.SqlClient.SqlException: トランザクション (プロセス ID 54) が、lock リソースでほかのプロセスとデッドロックしました。トランザクションがデッドロックの対象として選択されています。トランザクションを再実行してください。 というエラーが発生します。 ConnectOpen BeginTransaction SqlDataReader UPDATE or INSERT ExecuteNonQuery CommitCommand ConnectClose という順番で実行しています。 単純な文で単体だと問題ありませんが、 複数から実行すると、エラーが発生します。 なぜデッドロックが発生するのでしょうか?

  • クリティカルエラー Expression: ("Buffer too small", 0)

    VC++2005でコンパイルしたアプリですが、実行すると クリティカルエラーの次のメッセージが表示されました。 VCの設定で解決できるものなのでしょうか? Microsoft Visual C++ Debug Library ... Expression: ("Buffer too small", 0) Foi infomation how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (press Retry debug the application)

  • エラーについて

    Visual studio net 2003 で list10-7というウィンドウズプログラム作ってDebugをしたところ、 error LNK2019: unresolved external symbol __imp__timeGetTime@0 referenced in function "unsigned long __stdcall ThreadFunc(void *)" (?ThreadFunc@@YGKPAX@Z) と fatal error LNK1120: 1 unresolved externals という2つのエラーが出ました。ThreadFuncというのは自作のスレッド関数です。上記のエラーから、なんとなくtimeGetTime関数に何か問題があると思うのですが、全くわかりません。AlphaBlend関数を使うときライプラリmsimg32.dllを追加しましたが、timeGetTime関数も何かライプラリが必要なのでしょうか?