You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@zookeeper.apache.org by Sabyasachi Ruj <ru...@gmail.com> on 2011/03/10 14:17:54 UTC

Strange behavior if I am declaring a struct String_vector variable

I have two programs "trysample.cpp" and "sample.cpp". trysample.cpp
calls execv to invoke "sample", that is, compiled output of "sample.cpp".

sample.cpp simply prints the command line arguments passed to it.

The strange thing is if I am declaring a "struct String_vector"
variable in "trysample.cpp", the arguments received by sample.cpp
becomes wrong. If I am passing 3 arguments, it is showing us 5
arguments have been passed. But if I just comment the "struct
String_vector s;" part, it works fine!

Any idea?

I am giving code for both programs:

sample.cpp
=========
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

int main(int argc, char *argv[])
{
  printf ("Number of arugments received: %d\n", argc);
  for (int i = 0; i < argc; i++) {
    printf("%s\n", argv[i]);
  }
}


trysample.cpp
=========
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include "zookeeper.h"


int main(int argc, char *argv[])
{
  struct String_vector s;
  int pid = fork();
  if (pid == 0) {
    char * argv[] =
{"/var/www/vhosts/apps.w/subdomains/sr.c/httpdocs/c/zookeeper/tests/sample",
"aaa", "ddd"};
    execv("/var/www/vhosts/apps.w/subdomains/sr.c/httpdocs/c/zookeeper/tests/sample",
argv);
    printf("returned error! %d\n", errno);
  }
}




--
Sabyasachi

Re: Strange behavior if I am declaring a struct String_vector variable

Posted by Sabyasachi Ruj <ru...@gmail.com>.
Oops. I forgot the NULL pointer at the end of argv. My mistake!

On 10 March 2011 18:47, Sabyasachi Ruj <ru...@gmail.com> wrote:
> I have two programs "trysample.cpp" and "sample.cpp". trysample.cpp
> calls execv to invoke "sample", that is, compiled output of "sample.cpp".
>
> sample.cpp simply prints the command line arguments passed to it.
>
> The strange thing is if I am declaring a "struct String_vector"
> variable in "trysample.cpp", the arguments received by sample.cpp
> becomes wrong. If I am passing 3 arguments, it is showing us 5
> arguments have been passed. But if I just comment the "struct
> String_vector s;" part, it works fine!
>
> Any idea?
>
> I am giving code for both programs:
>
> sample.cpp
> =========
> #include<stdio.h>
> #include<unistd.h>
> #include<stdlib.h>
>
> int main(int argc, char *argv[])
> {
>  printf ("Number of arugments received: %d\n", argc);
>  for (int i = 0; i < argc; i++) {
>    printf("%s\n", argv[i]);
>  }
> }
>
>
> trysample.cpp
> =========
> #include <unistd.h>
> #include <stdlib.h>
> #include <errno.h>
> #include "zookeeper.h"
>
>
> int main(int argc, char *argv[])
> {
>  struct String_vector s;
>  int pid = fork();
>  if (pid == 0) {
>    char * argv[] =
> {"/var/www/vhosts/apps.w/subdomains/sr.c/httpdocs/c/zookeeper/tests/sample",
> "aaa", "ddd"};
>    execv("/var/www/vhosts/apps.w/subdomains/sr.c/httpdocs/c/zookeeper/tests/sample",
> argv);
>    printf("returned error! %d\n", errno);
>  }
> }
>
>
>
>
> --
> Sabyasachi
>



-- 
Sabyasachi