Sponsored Content
Top Forums Programming Redirecting Terminal to Local Application! Post 302479987 by jim mcnamara on Monday 13th of December 2010 03:48:57 PM
Old 12-13-2010
Corona gave you the answer, assuming we understand what you want. popen()
Take this code and play with it.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char **argv)
{
   FILE *cmd=NULL;                          // FILE* for popen
   char tmp[2048]={0x0};                    // string for input/output
   for(;;)                                  // loop forever (see exit below)
   {
      printf("Enter a command(exit to quit): ");
      fflush(stdout);                        //prompt to display
      fgets(tmp, sizeof(tmp), stdin);        // read answer 
      if (strcmp(tmp, "exit\n")==0 )         // if exit then exit program
           exit(0);        
      cmd=popen(tmp,"r");                    // open a command via popen
      while(fgets(tmp, sizeof(tmp), cmd)!=NULL) // display results
           printf("%s", tmp);
      pclose(cmd);                           // close the popen stream
   } 
   return 0;                                 // never reached
}

 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

redirecting one terminal into an other??

Hi guys; I want to show what am I doing on a terminal into another. I did something close but its not working really good. Example: cat /dev/pts/12 >/dev/pts/13 where 12 is my terminal and 13 its the other terminal. This is usefull for me to share my small unix knowledge to other people... (4 Replies)
Discussion started by: piltrafa
4 Replies

2. Shell Programming and Scripting

Redirecting output to a local file after sshing

ssh $USR@$host /bin/bash <<EOF awk ' BEGIN{f=0} !f { s=$0; sub(/,.+/, "", s); gsub(//, " ", s); t=(systime()-mktime(s)); if(t<=14400) f=1 } f ' /home/error.log >> error.txt EOFWe are trying to connect to a remote server through ssh and read values from error.log within last 4 hours.However, the... (3 Replies)
Discussion started by: Deepthz
3 Replies

3. Solaris

Can i bind to a local login terminal running using rsh or remotely

Hi Can i ask? I had multiple solaris workstation running and some local users using it. Is it possible to bind to the local user terminal or console he's using as if like the user well type and I can see it and what my typing in the local user see it also. Is it possible.. Thanks. (3 Replies)
Discussion started by: jao_madn
3 Replies

4. Shell Programming and Scripting

redirecting the terminal to file

Hi, I want to save the whole Output of the terminal in a file. I dont want to redirect a single command to a file (ls -l > test.txt), I want to redirect the whole last 40 lines into a file. Maybe i can read out the terminal while working with it, but i cant find a way to save the whole... (2 Replies)
Discussion started by: niratschi
2 Replies

5. Slackware

X terminal: Redirecting remote sound to my local audio device

Hello everybody, I'm testing some aspects of X Terminal implementation and it's going great. I can use remote applications on my local slow workstation at remote's processor speed by redirecting the remote DISPLAY variable to "my_local_ip:0.0"; but i'm having troubles to get remote audio and... (2 Replies)
Discussion started by: semash!
2 Replies

6. UNIX for Dummies Questions & Answers

pbpaste to application in terminal

Is it possible to execute a pbpaste command to an application or current application in focus? Thanks (0 Replies)
Discussion started by: fhill2
0 Replies

7. Shell Programming and Scripting

Redirecting script output to terminal

When ever i started my terminal,Every time I have to change the directory like "cd user/documents/ravi/folder2/folder3" Without typing this entire command every time ,I placed "alias c='cd user/documents/ravi/folder2/folder3'" in .bash_profile file. so that i can able to execute command 'c'... (6 Replies)
Discussion started by: Raviteja saddal
6 Replies

8. IP Networking

How to know local IP address in X-Terminal?

Im using a X-Terminal in my windows pc to connect to a Linux server. Is there a way to know my local IP address in my x-terminal console? Here are few commands which didnt help me: ss_cc@MGTS5026-13sh1:~> finger Login Name Tty Idle Login Time Where loadhlr ... (6 Replies)
Discussion started by: Arun_Linux
6 Replies

9. Shell Programming and Scripting

Cannot get terminal application to launch with a graphical launcher when successful in terminal

I have been having an extremely annoying problem. For the record, I am relatively new at this. I've only been working with unix-based OS's for roughly two years, mostly Xubuntu and some Kali. I am pretty familiar with the BASH language, as that's the default shell for debian. Now, I've made this... (16 Replies)
Discussion started by: Huitzilopochtli
16 Replies

10. Shell Programming and Scripting

Redirecting terminal to variable

when i do something like this: bona=$(echo hi2 > /dev/pts/1 ; printf '%s\n' "" | sed '/^$/d') i get: hi2 and the $bona variable is empty, when I run: echo ${bona} i get the result "hi2" outside of the variable. I want it stored in the bona variable with nothing outputted to the... (6 Replies)
Discussion started by: SkySmart
6 Replies
popen(3C)						   Standard C Library Functions 						 popen(3C)

NAME
popen, pclose - initiate a pipe to or from a process SYNOPSIS
#include <stdio.h> FILE *popen(const char *command, const char *mode); int pclose(FILE *stream); DESCRIPTION
The popen() function creates a pipe between the calling program and the command to be executed. The arguments to popen() are pointers to null-terminated strings. The command argument consists of a shell command line. The mode argument is an I/O mode, either r for reading or w for writing. The value returned is a stream pointer such that one can write to the standard input of the command, if the I/O mode is w, by writing to the file stream (see Intro(3)); and one can read from the standard output of the command, if the I/O mode is r, by reading from the file stream. Because open files are shared, a type r command may be used as an input filter and a type w as an output filter. A trailing F character can also be included in the mode argument as described in fopen(3C) to enable extended FILE facility. The environment of the executed command will be as if a child process were created within the popen() call using fork(2). If the applica- tion is standard-conforming (see standards(5)), the child is created as if invoked with the call: execl("/usr/xpg4/bin/sh", "sh", "-c",command, (char *)0); otherwise, the child is created as if invoked with the call: execl("/usr/bin/sh", "sh", "-c",command, (char *)0); The pclose() function closes a stream opened by popen() by closing the pipe. It waits for the associated process to terminate and returns the termination status of the process running the command language interpreter. This is the value returned by waitpid(3C). See wait.h(3HEAD) for more information on termination status. If, however, a call to waitpid() with a pid argument equal to the process ID of the command line interpreter causes the termination status to be unavailable to pclose(), then pclose() returns -1 with errno set to ECHILD to report this condition. RETURN VALUES
Upon successful completion, popen() returns a pointer to an open stream that can be used to read or write to the pipe. Otherwise, it returns a null pointer and may set errno to indicate the error. Upon successful completion, pclose() returns the termination status of the command language interpreter as returned by waitpid(). Other- wise, it returns -1 and sets errno to indicate the error. ERRORS
The pclose() function will fail if: ECHILD The status of the child process could not be obtained, as described in the DESCRIPTION. The popen() function may fail if: EMFILE There are currently FOPEN_MAX or STREAM_MAX streams open in the calling process. EINVAL The mode argument is invalid. The popen() function may also set errno values as described by fork(2) or pipe(2). USAGE
If the original and popen() processes concurrently read or write a common file, neither should use buffered I/O. Problems with an output filter may be forestalled by careful buffer flushing, for example, with fflush() (see fclose(3C)). A security hole exists through the IFS and PATH environment variables. Full pathnames should be used (or PATH reset) and IFS should be set to space and tab (" "). Even if the process has established a signal handler for SIGCHLD, it will be called when the command terminates. Even if another thread in the same process issues a wait(3C) call, it will interfere with the return value of pclose(). Even if the process's signal handler for SIGCHLD has been set to ignore the signal, there will be no effect on pclose(). EXAMPLES
Example 1 popen() example The following program will print on the standard output (see stdio(3C)) the names of files in the current directory with a .c suffix. #include <stdio.h> #include <stdlib.h> main() { char *cmd = "/usr/bin/ls *.c"; char buf[BUFSIZ]; FILE *ptr; if ((ptr = popen(cmd, "r")) != NULL) { while (fgets(buf, BUFSIZ, ptr) != NULL) (void) printf("%s", buf); (void) pclose(ptr); } return 0; } Example 2 system() replacement The following function can be used in a multithreaded process in place of the most common usage of the Unsafe system(3C) function: int my_system(const char *cmd) { FILE *p; if ((p = popen(cmd, "w")) == NULL) return (-1); return (pclose(p)); } ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Interface Stability |See below. | +-----------------------------+-----------------------------+ |MT-Level |Safe | +-----------------------------+-----------------------------+ The F character in the mode argument of popen() is Evolving. In all other respects this function is Standard. The pclose() function is Standard. SEE ALSO
ksh(1), pipe(2), fclose(3C), fopen(3C), posix_spawn(3C), stdio(3C), system(3C), wait(3C), waitpid(3C), wait.h(3HEAD), attributes(5), stan- dards(5) SunOS 5.11 14 Dec 2006 popen(3C)
All times are GMT -4. The time now is 07:28 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy