views:

1945

answers:

4

Bash scripts are very useful and can save a lot of programming time. So how do you start a bash script in a C++ program? Also if you know how to make user become the super-user that would be nice also. Thanks!

+6  A: 

Use the system function.

system("myfile.sh"); // myfile.sh should be chmod +x
Mehrdad Afshari
Thanks but you forgot to include this: system("./myfile.sh");
Lucas McCoy
It'll work without . if the folder is in your path :)
Mehrdad Afshari
+2  A: 
#include <stdio.h>
#include <stdlib.h>

// ....


system("my_bash_script.sh");
rlbond
+5  A: 

The only standard mandated implementation dependent way is to use the system() function from stdlib.h.

Also if you know how to make user become the super-user that would be nice also.

Do you want the script to run as super-user or do you want to elevate the privileges of the C executable? The former can be done with sudo but there are a few things you need to know before you can go off using sudo.

dirkgently
+2  A: 

StackOverflow: How to execute a command and get output of command within C++?

StackOverflow: (Using fork,pipe,select): ...nobody does things the hard way any more...

Also if you know how to make user become the super-user that would be nice also. Thanks!

sudo. su. chmod 04500. (setuid() & seteuid(), but they require you to already be root. E..g. chmod'ed 04***.)

Take care. These can open "interesting" security holes...

Depending on what you are doing, you may not need root. (For instance: I'll often chmod/chown /dev devices (serial ports, etc) (under sudo root) so I can use them from my software without being root. On the other hand, that doesn't work so well when loading/unloading kernel modules...)

Mr.Ree