popen() to execute\read a Linux (not windows) command

Sergio tioduke at gmail.com
Tue Nov 22 19:04:21 CST 2005


Rob Shearman wrote:

> Sergio Tridente wrote:
> 
>>Sergio wrote:
>>
>>>Hi,
>>>
>>>>From a win32 program compiled with winelib I am trying to execute the
>>>following:
>>>FILE *program;
>>>if (program = popen("dcop amarok player nowPlaying", "r"))
>>>        fgets(buff, sizeof(buff), program);
>>>The idea is to read the current track amarok's playing. But I keep
>>>receiving the following text: "File not found". Later I tried changing to
>>>: popen("ls", "r"), and the same problem arised. Finally I changed to
>>>popen("dir", "r") and then I got some data read (first line of the dir
>>>command). So, what I understand is that the popen function is
>>>opening/reading only windows programs. How can I make it open a pipe on a
>>>Linux' one? Is there something like linux_popen()?
>>>
>>>Thanks. Sergio.
>>>    
>>>
>>
>>OK. It's me, the same person of the original post (I just changed my
>>e-mail adress).
>>
>>I just imagined that what I needed to do could be achieved by creating a
>>separate source file which will be compiled using gcc against the standard
>>linux's libraries. Then I compiled the rest of the program and linked
>>everything together. Now, when I tried to run the application to just do:
>>program = popen("ls .", "r")
>>I got a message in the console saying "err: broken pipe".
>>To make the binary I did:
>>1) gcc -c linuxsource.c -o linuxsource.o
>>2) wingcc -c restofprogram.c -o restofprogram.o
>>3) To link: wingcc -share binaryname.spec restofprogram.o linuxsource.o
>>resource.res -L/usr/local/lib/wine -lwine -lmsvcrt -lgdi32 -lshell32
>>  
>>
> 
> Here is the problem ^ you are linking with msvcrt so you are getting the
> msvcrt version of popen.
> 
>>-lole32 -lcomctl32 -lcomdlg32 -o binaryname.dll
>>And well, I am actually making a dll not a program.
>>
> 
> Rob

I see. But I need to link to msvcrt for the rest of the functions in the dll
I am trying to make. I only need popen to be linked using linux' libraries.
Do you know what I can do to have both things (standard popen and wine's
libraries for the rest of the dll)?

Thanks.




More information about the wine-devel mailing list