Article View: comp.unix.programmer
Article #3430Re: Why do I get warnings using popen in g++??? Help needed!
From: Zhenbin (Kevin) Xu
Date: Mon, 16 Mar 1998 00:00
Date: Mon, 16 Mar 1998 00:00
94 lines
3593 bytes
3593 bytes
I found out that I have to define __EXTENSIONS_ (or something like
_POSIX_...) before any include headers. The key point (in my undrestanding)
is that SunOS distinguishes between ANSI C and POSIX. popen and pclose
happen to not belong ANSI C standard library. And thus the warning.
Regards,
Kevin
Zhenbin (Kevin) Xu wrote in message
<6ejp15$5ja@bgtnsc03.worldnet.att.net>...
>>Sun OS 5.5
>>g++ version unknown, probably very old (1993???)
>>
>>First of all, my program complied without any warning in my Linux box.
>>However, not in this Sun box...
>>
>>I got the following warnings:
>> msgqueue.cpp: In function `int DoServer()':
>> msgqueue.cpp:190: warning: implicit declaration of function `int
>>popen(...)'
>> msgqueue.cpp:190: warning: initialization to `FILE *' from `int' lacks
>a
>>cast
>> msgqueue.cpp:192: warning: implicit declaration of function `int
>>pclose(...)'
>>
>>Here is the context:
>> if( strlen(msgpackage.mtext) > 0 )
>> {
>> #ifdef _MYDEBUG
>> cout << "Server: rcv: " << msgpackage.mtext << endl;
>> #endif
>> char cmdLine[MSGBUFSIZE+24];
>> sprintf(cmdLine,"%s%s",cmdPing,msgpackage.mtext);
>>+ FILE* fp=popen(cmdLine,"r");
>>+ int iStatus=0;
>>+ switch( pclose(fp) ) // pclose returns the termination status of
>>cmdLine
>> {
>> case 0:
>> iStatus = HOST_ALIVE;
>> break;
>> default:
>> iStatus = HOST_DEAD;
>> }
>> sprintf( msgpackage.mtext +
>>strlen(msgpackage.mtext),"\t%s",STR_HOST_STATUS[iStatus] );
>> msgpackage.mtype = SERVER_DATA;
>> msgsnd( msg_id, (MSGStruct)&msgpackage, MSGBUFSIZE, 0);
>> }
>>
>>It seems very clear that the "popen" and "pclose" are not declared in the
>>header file. However, they suppose to be declared in stdio.h and here is
my
>>includes:
>> #include <sys/types.h>
>> #include <sys/ipc.h>
>> #include <sys/msg.h>
>> #include <limits.h>
>> #include <unistd.h>
>> #include <syslog.h>
>> #include <errno.h>
>> #include <string.h>
>> #include <stdio.h>
>> #include <stdlib.h>
>> #include <fstream.h>
>> #include <iostream.h>
>>
>>I suspect that this is because that I primarily use C++ functions and
there
>>are some preprocess symbols need to be declared/cleared. If it is the
>case,
>>how can I use popen in my C++ program in SUN OS with a probably obsoleted
>>g++ version???
>>
>>Once again, there is no any syntax and logical error when I run this
>program
>>on my Linux machine. However, I need it to be able to run on that stupid
>Sun
>>box as well - and worst of all, I am primary a Windows programmer.
>>
>>Any information will be very much appreciated! Please also reply to my
>>account at kevin@blueshoe.com .
>>
>>Thanks in advance,
>>Kevin
>>
>>
>>
>>
>>
>
>
Technical Details
Message-ID:
<6ekol7$mr9@bgtnsc02.worldnet.att.net>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailReferences:
<6ejp15$5ja@bgtnsc03.worldnet.att.net>Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: f8c9b,d6189dc8a4f3b3f5 X-Google-Attributes: gidf8c9b,public X-Google-Thread: fc89c,d6189dc8a4f3b3f5 X-Google-Attributes: gidfc89c,public X-Google-Thread: 10ba33,d6189dc8a4f3b3f5 X-Google-Attributes: gid10ba33,public From: "Zhenbin (Kevin) Xu" <zbxu@worldnet.att.net> Subject: Re: Why do I get warnings using popen in g++??? Help needed! Date: 1998/03/16 Message-ID: <6ekol7$mr9@bgtnsc02.worldnet.att.net> X-Deja-AN: 334758602 References: <6ejp15$5ja@bgtnsc03.worldnet.att.net> X-MimeOLE: Produced By Microsoft MimeOLE V4.71.1712.3 Organization: AT&T WorldNet Services Newsgroups: comp.unix.programmer,comp.unix.questions,gnu.g++.help