Search Results

Search found 7934 results on 318 pages for 'git gui'.

Page 100/318 | < Previous Page | 96 97 98 99 100 101 102 103 104 105 106 107  | Next Page >

  • How to run a GUI app from ssh shell?

    - by karramba
    I can access my linux box by ssh and by vnc. I want to run a GUI application, but directly from ssh, I don't want to access through VNC and click around. So, after logging in using ssh, I want to issue a magic command, so that when I log in through VNC I will see my GUI app running. How can I do this? edit: The linux box have X server running on it. I need to automate restarting a GUI application. I want to do it without any kind of GUI interaction. What I need: login through ssh on SERVER run my GUI app by forcing it to bind to X server running on SERVER ??? PROFIT!

    Read the article

  • Microsoft intègre Git à Codeplex, la plateforme d'hébergement de projets open-source supporte l'application de gestion des versions

    Microsoft intègre Git à Codeplex La plateforme d'hébergement de projets open source supporte désormais l'application de gestion des versions en plus de Mercurial et TFS Codeplex, la plateforme d'hébergement des projets open source de Microsoft prend désormais en charge Git. Git est une application de gestion des versions décentralisée libre créée par Linux Torvalds, le père du noyau Linux et distribuée sous la licence GNU 2. CodePlex utilise déjà le logiciel de gestion des versions décentralisé Mercurial, pour le contrôle de version distribué et Team Foundation Server (qui prend en charge les clients Subversion) pour le contrôle de version centralisée. Malgr...

    Read the article

  • CreateProcessAsUser doesn't draw the GUI

    - by pavel.tuzov
    Hi, I have a windows service running under "SYSTEM" account that checks if a specific application is running for each logged in user. If the application is not running, the service starts it (under corresponding user name). I'm trying to accomplish my goal using CreateProcessAsUser(). The service does start the application under corresponding user name, but the GUI is not drawn. (Yes, I'm making sure that "Allow service to interact with desktop" check box is enabled). System: XP SP3, labguage: C# Here is some code that might be of interest: PROCESS_INFORMATION processInfo = new PROCESS_INFORMATION(); startInfo.cb = Marshal.SizeOf(startInfo); startInfo.lpDesktop = "winsta0\\default"; bResult = Win32.CreateProcessAsUser(hToken, null, strCommand, IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, null, ref startInfo, out processInfo); As far as I understand, setting startInfo.lpDesktop = "winsta0\default"; should have used the desktop of corresponding user. Even contrary to what is stated here: http://support.microsoft.com/kb/165194, I tried setting lpDesktop to null, or not setting it at all, both giving the same result: process was started in the name of expected user and I could see a part of window's title bar. The "invisible" window intercepts mouse click events, handles them as expected. It just doesn't draw itself. Is anyone familiar with such a problem and knows what am I doing wrong?

    Read the article

  • GUI Agent accepts statuses from Daemon and shows it using progress indicator

    - by Pavel
    Hi to all! My application is a GUI agent, which communicate with daemon through the unix domain socket, wrapped in CFSocket.... So there are main loop and added CFRunLoop source. Daemon sends statuses and agent shows it with a progress indicator. When there are any data on socket, callback function begin to work and at this time I have to immediately show the new window with progress indicator and increase counter. //this function initiate the runloop for listening socket - (int) AcceptDaemonConnection:(ConnectionRef)conn { int err = 0; conn->fSockCF = CFSocketCreateWithNative(NULL, (CFSocketNativeHandle) conn->fSockFD, kCFSocketAcceptCallBack, ConnectionGotData, NULL); if (conn->fSockCF == NULL) err = EINVAL; if (err == 0) { conn->fRunLoopSource = CFSocketCreateRunLoopSource(NULL, conn->fSockCF, 0); if (conn->fRunLoopSource == NULL) err = EINVAL; else CFRunLoopAddSource(CFRunLoopGetCurrent(), conn->fRunLoopSource, kCFRunLoopDefaultMode); CFRelease(conn->fRunLoopSource); } return err; } // callback function void ConnectionGotData(CFSocketRef s, CFSocketCallBackType type, CFDataRef address, const void * data, void * info) { #pragma unused(s) #pragma unused(address) #pragma unused(info) assert(type == kCFSocketAcceptCallBack); assert( (int *) data != NULL ); assert( (*(int *) data) != -1 ); TStatusUpdate status; int nativeSocket = *(int *) data; status = [agg AcceptPacket:nativeSocket]; // [stWindow InitNewWindow] inside [agg SendUpdateStatus:status.percent]; } AcceptPacket function receives packet from the socket and trying to show new window with progress indicator. Corresponding function is called, but nothing happens... I think, that I have to make work the main application loop with interrupting CFSocket loop... Or send a notification? No idea....

    Read the article

  • SConfig - option 12). restore graphical user interface - not present

    - by NickC
    Started off with a Server Core install to which I then added the GUI with: Install-WindowsFeature Server-Gui-Shell, Server-Gui-Mgmt-Infra So far so good, I then removed the GUI again to get back to text only mode with: Remove-WindowsFeature Server-Gui-Shell, Server-Gui-Mgmt-Infra Now at this point I should beable to use SConfig option 12 to reinstall the GUI again but that SConfig option is missing: "12) Restore Graphical User Interface (GUI)" not present, how can I get SConfig to display this option? Has anyone else noticed that this option is missing. Thanks, Nick

    Read the article

  • Version Control: multiple version hell, file synchronization

    - by SigTerm
    Hello. I would like to know how you normally deal with this situation: I have a set of utility functions. Say..5..10 files. And technically they are static library, cross-platform - SConscript/SConstruct plus Visual Studio project (not solution). Those utility functions are used in multiple small projects (15+, number increases over time). Each project has a copy of a few files or of an entire library, not a link into one central place. Sometimes project uses one file, two files, some use everything. Normally, utility functions are included as a copy of every file and SConscript/SConstruct or Visual Studio Project (depending on the situation). Each project has a separate git repository. Sometimes one project is derived from other, sometimes it isn't. You work on every one of them, in random order. There are no other people (to make things simpler) The problem arises when while working on one project you modify those utility function files. Because each project has a copy of file, this introduces new version, which leads to the mess when you try later (week later, for example) to guess which version has a most complete functionality (i.e. you added a function to a.cpp in one project, and added another function to a.cpp in another project, which created a version fork) How would you handle this situation to avoid "version hell"? One way I can think of is using symbolic links/hard links, but it isn't perfect - if you delete one central storage, it will all go to hell. And hard links won't work on dual-boot system (although symbolic links will). It looks like what I need is something like advanced git repository, where code for the project is stored in one local repository, but is synchronized with multiple external repositories. But I'm not sure how to do it or if it is possible to do this with git. So, what do you think?

    Read the article

  • Best source control system for maintaining different versions

    - by dalecooper
    Hi all! We need to be able to simultanously maintain a set of different versions of our system. I assume this is best done using branching. We currently use TFS2008 for source control, work items and automatic builds. What is the best version control solution for this task? Our organization is in the process of merging to TFS2010. Will TFS2010 give us the functionality we need to easily manage a series of branches per system version. We need to be able to keep each version isolated from the others, so that we can do testing deployment for each version. Our dev team consists of 5 .net developers and two flash developers. I have heard a lot of talk about GIT. Should we consider using GIT instead of TFS for source control? Is it possible to use TFS2010 together with GIT? Does anyone have similar setups that works nicely? Any sugggestions are appreciated! Thanks, Kjetil.

    Read the article

  • How can I unit test a PHP class method that executes a command-line program?

    - by acoulton
    For a PHP application I'm developing, I need to read the current git revision SHA which of course I can get easily by using shell_exec or backticks to execute the git command line client. I have obviously put this call into a method of its very own, so that I can easily isolate and mock this for the rest of my unit tests. So my class looks a bit like this: class Task_Bundle { public function execute() { // Do things $revision = $this->git_sha(); // Do more things } protected function git_sha() { return `git rev-parse --short HEAD`; } } Of course, although I can test most of the class by mocking git_sha, I'm struggling to see how to test the actual git_sha() method because I don't see a way to create a known state for it. I don't think there's any real value in a unit test that also calls git rev-parse to compare the results? I was wondering about at least asserting that the command had been run, but I can't see any way to get a history of shell commands executed by PHP - even if I specify that PHP should use BASH rather than SH the history list comes up empty, I presume because the separate backticks executions are separate terminal sessions. I'd love to hear any suggestions for how I might test this, or is it OK to just leave that method untested and be careful with it when the app is being maintained in future?

    Read the article

  • How do I add the go language to gitg's list of viewable sources?

    - by Hotei
    Hoping a 'git' guru will help out here. I am just beginning to "git" for the first time and have (among other things :-) ) git and gitg installed from Ubuntu 10.4 / AMD64 distribution (ie. maybe not 'latest' version but not ancient). I am trying to look at the go code I've committed via gitg and in the "tree tab" it says :Cannot display file content as text. However, the "details tab" shows the diffs of the same file just fine. I know gitg's "tree tab" is working because I can use the tree view on *.c / *.html / *.txt etc just fine. Is there a way to tweak gitg into understanding that "*.go" is just text? A little more context: Installed gitg version is 0.0.5 - ie a version behind latest - 0.0.6 - source of which I am looking thru now. I do have a working /usr/share/gtksourceview-2.0/language-specs/ go.lang. It works just fine as highlighter in gedit. It appears that gitg may require displayable files to have a mime type of "text/plain", so I added that to go.lang No joy. gitg still fails on *.go I'm relatively sure the fix is simple, just don't know where to look.

    Read the article

  • What's the best practice for handling system-specific information under version control?

    - by Joe
    I'm new to version control, so I apologize if there is a well-known solution to this. For this problem in particular, I'm using git, but I'm curious about how to deal with this for all version control systems. I'm developing a web application on a development server. I have defined the absolute path name to the web application (not the document root) in two places. On the production server, this path is different. I'm confused about how to deal with this. I could either: Reconfigure the development server to share the same path as the production Edit the two occurrences each time production is updated. I don't like #1 because I'd rather keep the application flexible for any future changes. I don't like #2 because if I start developing on a second development server with a third path, I would have to change this for every commit and update. What is the best way to handle this? I thought of: Using custom keywords and variable expansion (such as setting the property $PATH$ in the version control properties and having it expanded in all the files). Git doesn't support this because it would be a huge performance hit. Using post-update and pre-commit hooks. Possibly the likely solution for git, but every time I looked at the status, it would report the two files as being changed. Not really clean. Pulling the path from a config file outside of version control. Then I would have to have the config file in the same location on all servers. Might as well just have the same path to begin with. Is there an easy way to deal with this? Am I over thinking it?

    Read the article

  • How can I coordinate code review tool and RCS (specifically git)

    - by Chris Nelson
    We're committed to git for code management. We're trying to find a tool that will help us systematize code reviews. We're considering Gerrit and Code Collaborator but would welcome other suggestions. We're having a problem answering the question, "How do we know every commit was reviewed?" (Or "What commits have yet to be reviewed?") One answer would be to submit every commit or every push for review and track incomplete reviews in the review tool. I'm not entirely happy with relying on a another tool -- especially if it's not open source -- to tell us this. What seems to be a better answer is to rely on sign offs in git (e.g., "Signed-off-by: Chris Nelson") and use a hook in the review tool to sign off commits on behalf of the reviewer. And advantage of this is if we use some other review mechanism for some commits, we have just one place to look for results. One problem with this is that we can't require review before push because the review tool is unlikely to have access to the developer's private repository clone to add the sign-off. Any ideas on integrating code review with code management to achieve ease of use and high visibility of unreviewed changes?

    Read the article

  • Best way of creating lite and extended version of Git project

    - by Saif Bechan
    I have made a little framework for php. In this project I have the basic functionalities that I use for most of my projects. I have also inserted some sample data so I do not forget how it all works again. I have put the framework under version control using git. Everything works fine now and I want to further build on this. This is my first git project so I do not know which method I should use. Ok the first thing I want to do is creating 2 more versions of the project. As I explained before the version I have now has some sample data inside it. So the first version I want to create is a stripped down version, removing the sample data. I can use this version to create any new project. The second version I want to create is an extended version. This has the lite version, combined with the sample data, plus some more extensions on it. So in the end I have 3 version of the same project, small medium and large. Now what is the best way of doing this. Should I create 3 repositories for this, or can I use just one repository for all the versions.

    Read the article

  • Is it possible to manually specify an alternative Procfile on Heroku?

    - by BillyBBone
    I have a repository which can be deployed in two modes: one is a front-end web application, while the other is a data manipulating process which runs non-stop, 24x7. The application runs on Django and connects to a Postgres database. For architectural reasons that I won't go into, I'd like to deploy the app in front-end mode inside as one Heroku application, and deploy the same app (i.e. the same git repo) in the data agent mode, as another Heroku application. Both applications will share the same Postgres connection string, and thus the data agent will feed the front-end app. Is it possible to maintain two separate Procfiles in one repo? This would cause the 3 appropriate dynos to start in front-end mode, and would spin up another process entirely in the other mode.

    Read the article

  • Can not su to normal user

    - by Summer Nguyen
    I have a centos 5.8 box with gitolite installed . It worked fine until I yesterday my gitolite didn't work. ( fatal the remote end hung up unexpectedly) I logged to the box using root account. and then su to git user but I can't. I test again by creating a new user , but I also can not su to that user. Any idea ?, thank you very much. P.S: I installed postfix the day before , but I'm not sure if postfix cause the problem.

    Read the article

  • How to setup Secure SemiPublic Revision Control System

    - by user24912
    I have a windows server with a project configured with a revision control system. Suppose it's GIT or SVN or .... Suppose there are 10 people around the globe working on this project. The first thing that comes in to mind is to secure the connection between these programmer and the server with SSH. but my problem is that the a hacker can destroy the server if he gets the SSH username and password user account (tell me if i'm wrong). So I need a secure way to let thoes programmers push their revision to the server. Any ideas would be lovely

    Read the article

  • ssh_exchange_identification: Connection closed by remote host?

    - by user51684
    debug1: Connection established. debug1: identity file /home/DAMS/.ssh/id_rsa type 1 debug1: identity file /home/DAMS/.ssh/id_rsa-cert type -1 debug1: identity file /home/DAMS/.ssh/id_dsa type -1 debug1: identity file /home/DAMS/.ssh/id_dsa-cert type -1 ssh_exchange_identification: Connection closed by remote host hello this one is different . no missing or anything. im using cygwin. and it just stop when im doing git push production on my server. usually its ok, but i dont know why its stop connections i wonder whats wrong.

    Read the article

  • gitolite post commit hook to update redmine's repository

    - by eliocs
    Hello, I currently have a ubuntu server machine which has gitolite and redmine installed. Redmine accesses repository copies which are updated using a cron task. Having a cron task to pull the updates seems like an overkill is there anyway a gitolite post-commit script could execute a pull as the redmine user. My current update script looks like this: */15 * * * * redmine cd /home/redmine/repositories/support && git pull The post-commit script I guess should be similar, how can I give the gitolite user the privileges to execute the pull as the redmine user? Thanks in advance. p.s: don't have enough reputation to create de gitolite tag.

    Read the article

  • Can't install the gitosis

    - by Shuoling Liu
    While I am trying to init the gitosis, I got the following errors, any idea? :~$ sudo -H -u git gitosis-init < ida_rsa.pub [sudo] password for chinablc: Sorry, try again. [sudo] password for chinablc: Traceback (most recent call last): File "/usr/bin/gitosis-init", line 5, in <module> from pkg_resources import load_entry_point File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 2562, in <module> working_set.require(__requires__) File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 626, in require needed = self.resolve(parse_requirements(requirements)) File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 524, in resolve raise DistributionNotFound(req) # XXX put more info here pkg_resources.DistributionNotFound: gitosis==0.2

    Read the article

  • Is there a way to correct wrongly typed password / abort the operation while on password prompt in the console in MINGW32?

    - by jakub.g
    I sometimes mistype a password when being asked for it, e.g. by Git when pushing to remote repository. The password is not displayed (even masked as asterisks) in the console. Is there a way either to correct the password, or to abort the operation? Backspace for editing and CtrlC for aborting do not seem to work. I want to save some time instead of waiting for the remote authentication to fail, or providing a bad password, then Enter, CtrlC. Edit: Unfortunately CtrlU doesn't work for me (MINGW32 @ Windows XP). Any other guesses?

    Read the article

  • bootstraping a SparkleShare project

    - by WoJ
    I just tried SparkleShare as a possible replacement for dropbox/insynch. It looks quite promising, being based on open standards. I was wondering if someone has gone though the process of "bootstraping" a SparkleShare project. I have the initial files I would like to keep synchronized on two clients and the server (as plain files). I was wondering if there would be a way to set a project up so that I would not need to download/upload all the files back and forth (as they are readily available on all three systems). I guess this would involve some git kung-fu I am far from mastering. Thanks!

    Read the article

  • Mount drive at /Volumes/NAME/ or similar in Cygwin

    - by Adam
    Hi.. I'm using Cygwin on Windows 7. When I plug in an USB stick, the drive automatically gets mounted to /cygdrive/x . This is good and really easy to use. My problem is that the drive letter changes sometimes, and when I've got remotes set up in git - I've got one called usb at /cygdrive/h/ - this sometimes doesn't work and I have to change the remote URL. That's just an example, there are other scenarios where I wouldn't want it to change. I like what the Mac does, and puts mounts a volume at /Volumes/STICK (STICK is the Volume name of my usb stick). Is there any way I can do this, or something similar under Cygwin. Thanks

    Read the article

  • How do I get transparent, efficient, file system snapshotting or versioning on ext3/4?

    - by shovas
    I've long thought about versioning file systems. This is a killer feature and I've looked at Wayback, ext3cow, zfs, fuse solutions, or just cvs/svn/git overlays. I consider ext3cow the model for my requirements. Transparent, efficient, but I can do without the extra ls abc@timestamp feature. As long as I somehow get automated, transparent versioning of my files. It could be instantaneous or it could be based on snapshots on intervals of 10s, 30s, 1m, 5m, 15m, etc. Just something that will efficiently deal with thousands of files in a given directory all of various sizes, most small, but some upwards of 100m to 1gb. ZFS isn't really an option as I'm on linux (and would prefer not to use it through fuse as I already have an ext3 setup I want to version, not something new). What solutions are out there?

    Read the article

  • Mount drive at /Volumes/NAME/ or similar in Cygwin

    - by Adam
    Hi.. I'm using Cygwin on Windows 7. When I plug in an USB stick, the drive automatically gets mounted to /cygdrive/x . This is good and really easy to use. My problem is that the drive letter changes sometimes, and when I've got remotes set up in git - I've got one called usb at /cygdrive/h/ - this sometimes doesn't work and I have to change the remote URL. That's just an example, there are other scenarios where I wouldn't want it to change. I like what the Mac does, and puts mounts a volume at /Volumes/STICK (STICK is the Volume name of my usb stick). Is there any way I can do this, or something similar under Cygwin. Thanks

    Read the article

  • Problem creating gui from xml -> Strange CPButton behaviour

    - by Superpro
    Hallo, I'm new to objective-j and cappuccino and just have tried to create a small application, that creates the gui dynamically from a xml file. Unfortunately it works only partially. It seems that the button regions are disorder. This means, that the buttons also response if I click besides the button.... Please help me. I dont get it.. - (void)applicationDidFinishLaunching:(CPNotification)aNotification { mControlList = [CPArray alloc]; theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask], contentView = [theWindow contentView]; [contentView setFrame:[[contentView superview] bounds]]; [contentView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable]; // Loadxmlfile var xhttp; if (window.XMLHttpRequest) { xhttp=new XMLHttpRequest() } else { xhttp=new ActiveXObject("Microsoft.XMLHTTP") } xhttp.open("GET","test.xml",false); xhttp.send(""); xmlDoc = xhttp.responseXML; //Get controls nodeand iterate through all controls var node = xmlDoc.getElementsByTagName("controls")[0]; for (var i=0; i<node.childNodes.length; i++) { if(node.childNodes[i].nodeName=="button"){ var item = node.childNodes[i]; var name = item.attributes["name"].nodeValue; var text = item.getElementsByTagName("text") [0].childNodes[0].nodeValue; var x= item.getElementsByTagName("rect") [0].attributes["x"].nodeValue; var y= item.getElementsByTagName("rect") [0].attributes["y"].nodeValue; var width= item.getElementsByTagName("rect") [0].attributes["width"].nodeValue; var height= item.getElementsByTagName("rect") [0].attributes["height"].nodeValue; var b = [[Button alloc] InitWithParent:contentView Text:text X:x Y:y Width:width Height:height]; [mControlList addObject:b]; } } [theWindow orderFront:self]; } @implementation Button : CPObject { CPButton _button; } - (Button)InitWithParent:(CPView)contentView Text:(CPString)text X: (int)x Y:(int)y Width:(int)width Height:(int)height { _button = [[CPButton alloc] initWithFrame: CGRectMake(x,y,width,height)]; [_button setTitle:text]; [_button setTarget:self]; [_button setAction:@selector(cmdNext_onClick:)]; [contentView addSubview:_button]; return self; } - (void)cmdNext_onClick:(id)sender { } @end

    Read the article

  • Dealing with external processes

    - by Jesse Aldridge
    I've been working on a gui app that needs to manage external processes. Working with external processes leads to a lot of issues that can make a programmer's life difficult. I feel like maintenence on this app is taking an unacceptably long time. I've been trying to list the things that make working with external processes difficult so that I can come up with ways of mitigating the pain. This kind of turned into a rant which I thought I'd post here in order to get some feedback and to provide some guidance to anybody thinking about sailing into these very murky waters. Here's what I've got so far: Output from the child can get mixed up with output from the parent. This can make both outputs misleading and hard to read. It can be hard to tell what came from where. It becomes harder to figure out what's going on when things are asynchronous. Here's a contrived example: import textwrap, os, time from subprocess import Popen test_path = 'test_file.py' with open(test_path, 'w') as file: file.write(textwrap.dedent(''' import time for i in range(3): print 'Hello %i' % i time.sleep(1)''')) proc = Popen('python -B "%s"' % test_path) for i in range(3): print 'Hello %i' % i time.sleep(1) os.remove(test_path) I guess I could have the child process write its output to a file. But it can be annoying to have to open up a file every time I want to see the result of a print statement. If I have code for the child process I could add a label, something like print 'child: Hello %i', but it can be annoying to do that for every print. And it adds some noise to the output. And of course I can't do it if I don't have access to the code. I could manually manage the process output. But then you open up a huge can of worms with threads and polling and stuff like that. A simple solution is to treat processes like synchronous functions, that is, no further code executes until the process completes. In other words, make the process block. But that doesn't work if you're building a gui app. Which brings me to the next problem... Blocking processes cause the gui to become unresponsive. import textwrap, sys, os from subprocess import Popen from PyQt4.QtGui import * from PyQt4.QtCore import * test_path = 'test_file.py' with open(test_path, 'w') as file: file.write(textwrap.dedent(''' import time for i in range(3): print 'Hello %i' % i time.sleep(1)''')) app = QApplication(sys.argv) button = QPushButton('Launch process') def launch_proc(): # Can't move the window until process completes proc = Popen('python -B "%s"' % test_path) proc.communicate() button.connect(button, SIGNAL('clicked()'), launch_proc) button.show() app.exec_() os.remove(test_path) Qt provides a process wrapper of its own called QProcess which can help with this. You can connect functions to signals to capture output relatively easily. This is what I'm currently using. But I'm finding that all these signals behave suspiciously like goto statements and can lead to spaghetti code. I think I want to get sort-of blocking behavior by having the 'finished' signal from QProcess call a function containing all the code that comes after the process call. I think that should work but I'm still a bit fuzzy on the details... Stack traces get interrupted when you go from the child process back to the parent process. If a normal function screws up, you get a nice complete stack trace with filenames and line numbers. If a subprocess screws up, you'll be lucky if you get any output at all. You end up having to do a lot more detective work everytime something goes wrong. Speaking of which, output has a way of disappearing when dealing external processes. Like if you run something via the windows 'cmd' command, the console will pop up, execute the code, and then disappear before you have a chance to see the output. You have to pass the /k flag to make it stick around. Similar issues seem to crop up all the time. I suppose both problems 3 and 4 have the same root cause: no exception handling. Exception handling is meant to be used with functions, it doesn't work with processes. Maybe there's some way to get something like exception handling for processes? I guess that's what stderr is for? But dealing with two different streams can be annoying in itself. Maybe I should look into this more... Processes can hang and stick around in the background without you realizing it. So you end up yelling at your computer cuz it's going so slow until you finally bring up your task manager and see 30 instances of the same process hanging out in the background. Also, hanging background processes can interefere with other instances of the process in various fun ways, such as causing permissions errors by holding a handle to a file or someting like that. It seems like an easy solution to this would be to have the parent process kill the child process on exit if the child process didn't close itself. But if the parent process crashes, cleanup code might not get called and the child can be left hanging. Also, if the parent waits for the child to complete, and the child is in an infinite loop or something, you can end up with two hanging processes. This problem can tie in to problem 2 for extra fun, causing your gui to stop responding entirely and force you to kill everything with the task manager. F***ing quotes Parameters often need to be passed to processes. This is a headache in itself. Especially if you're dealing with file paths. Say... 'C:/My Documents/whatever/'. If you don't have quotes, the string will often be split at the space and interpreted as two arguments. If you need nested quotes you can use ' and ". But if you need to use more than two layers of quotes, you have to do some nasty escaping, for example: "cmd /k 'python \'path 1\' \'path 2\''". A good solution to this problem is passing parameters as a list rather than as a single string. Subprocess allows you to do this. Can't easily return data from a subprocess. You can use stdout of course. But what if you want to throw a print in there for debugging purposes? That's gonna screw up the parent if it's expecting output formatted a certain way. In functions you can print one string and return another and everything works just fine. Obscure command-line flags and a crappy terminal based help system. These are problems I often run into when using os level apps. Like the /k flag I mentioned, for holding a cmd window open, who's idea was that? Unix apps don't tend to be much friendlier in this regard. Hopefully you can use google or StackOverflow to find the answer you need. But if not, you've got a lot of boring reading and frusterating trial and error to do. External factors. This one's kind of fuzzy. But when you leave the relatively sheltered harbor of your own scripts to deal with external processes you find yourself having to deal with the "outside world" to a much greater extent. And that's a scary place. All sorts of things can go wrong. Just to give a random example: the cwd in which a process is run can modify it's behavior. There are probably other issues, but those are the ones I've written down so far. Any other snags you'd like to add? Any suggestions for dealing with these problems?

    Read the article

< Previous Page | 96 97 98 99 100 101 102 103 104 105 106 107  | Next Page >