• C

passing pointers in a system call ?

I want to know how , if it is possible to pass pointers in a system call.

Basically, I  have command line utility functions in a executable say a.out.
from another executable b.out I invoke System calls in a.out.
But I would also like to pass pointers in the System call to be updated by this command line utility.

How do I do this?
a.out is not a running process, it is a command line utility that will exit once the system call is executed.

What are the other efficient solutions I can have for this scenario.
Can I use some perl help to pass pointers.

Who is Participating?
brettmjohnsonConnect With a Mentor Commented:
Yes you can pass pointers to system calls.
It is not clear from your question what you are trying to do.
You cannot do this:

Process B passes a pointer in its address space to process A via some IPC.
Process A then passes that pointer to a system call.  The pointer is an
address in process B, but the system doesn't know that.  The system
only knows that the pointer is not a valid address in process A, from
which it received the pointer.  If process A acts as a proxy for process B,
then you must communicate the data appropriately.  Depending upon your
needs and the technology available, this is often done with something like:

 - shared memory (process A and B share a chunk of address space)
 - data/object serialization (the full data is passed from B to A)
 - formal remote object technology (CORBA, RMI, PDO, RPC, etc)

tell clearly
sanjay_thakurAuthor Commented:
A attaches itself to shared memory: ptr
A invokes the system call : system(blah);

B attaches itself to shared memory
B executes the system call
Updates the pointer (ptr)
Detaches from shared memory
(B is just a command line utility that will execute the system call and exit)

I presume this will work.
My question:
1) Is there any way to avoid having to use shared memory
2) How exactly do I pass ptr in system calls, curious?

You can send ptr to other process. You can update the ptr in other process. But you can't access the value of that ptr pointing to in other process.

you can use file, FIFOs, messages, share memory, sockets.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.